home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 21 / Mac Magazin and MacEasy Magazine CD - Issue 21.iso / Wissenschaft & Technik / yorick12vr1-nofpu folder / include / copyb.i < prev    next >
Text File  |  1995-07-26  |  2KB  |  69 lines

  1. /*
  2.    COPYB.I
  3.    Utility to copy binary files.
  4.  
  5.    $Id: copyb.i,v 1.1 1993/08/27 18:50:06 munro Exp $
  6.  */
  7. /*    Copyright (c) 1994.  The Regents of the University of California.
  8.                     All rights reserved.  */
  9.  
  10. func copyb(src, dst, size=)
  11. /* DOCUMENT copyb, src, dst
  12.          or copyb, openb(src_name), createb(dst_name)
  13.      Copy binary file SRC to binary file DST.
  14.      Check for "obsolete/" subdirectory of Yorick home directory for
  15.      extensions of the openb function to old file formats.
  16.      Use the size= keyword to specify a non-default (4 Mbbyte) size for
  17.      the members of the outpu file family.
  18.    SEE ALSO: openb, createb, open102, close102
  19.  */
  20. {
  21.   vars= get_vars(src);
  22.  
  23.   /* declare and copy non-record variables */
  24.   names= *vars(1);
  25.   n= numberof(names);
  26.   for (i=1 ; i<=n ; i++) {
  27.     name= names(i);
  28.     value= get_member(src, name);
  29.     add_variable, dst, -1, name, structof(value), dimsof(value);
  30.     get_member(dst, name)= value;
  31.     value= [];
  32.   }
  33.  
  34.   names= *vars(2);
  35.   n= numberof(names);
  36.   if (n<1) return;
  37.  
  38.   /* declare record variables */
  39.   add_record, dst;
  40.   for (i=1 ; i<=n ; i++) {
  41.     name= names(i);
  42.     add_variable, dst, -1, name, structof(get_member(src, name)), \
  43.       dimsof(get_member(src, name));
  44.   }
  45.  
  46.   if (size) set_filesize, dst, size;
  47.  
  48.   /* copy record variables for each record */
  49.   times= get_times(src);
  50.   ncycs= get_ncycs(src);
  51.   time= ncyc= [];
  52.   r= 1;
  53.   if (!is_void(times)) jt, src, times(1);
  54.   else {
  55.     while (jt(src,-));
  56.     jt, src;
  57.   }
  58.   do {
  59.     if (!is_void(times)) time= times(r);
  60.     if (!is_void(ncycs)) ncyc= ncycs(r);
  61.     add_record, dst, time, ncyc, -1;
  62.     for (i=1 ; i<=n ; i++) {
  63.       name= names(i);
  64.       get_member(dst, name)= get_member(src, name);
  65.     }
  66.     r++;
  67.   } while (jt(src));
  68. }
  69.